Conservation de l'ordre des données et ne demande pas de recherche complexe
La fonction
def suite_croissante(t):
"""
renvois la plus grande suite croissante d'un tableau non vide
donnee en entre: tableau d'entier
renvois: la taille de la plus grande suite croissante (int) et la suite en question (list)
"""
assert len(t)>0, "le tableau est vide"
compteur_final=0
compteur_comparer= 0
j=0
while j!= len(t):
pile1=PileDyna()
for i in range(j, len(t)):
pile1.empiler(t[i])
j+=1
if i==len(t)-1:
break
if t[i]>=t[i+1]:
break
pile2= PileDyna()
while not pile1.est_vide():
pile2.empiler(pile1.depiler())
compteur_comparer+=1
if compteur_comparer>=compteur_final:
pile3= PileDyna()
while not pile2.est_vide():
pile3.empiler(pile2.depiler())
compteur_final= compteur_comparer
compteur_comparer=0
return compteur_final, pile3.afficher()
3 piles, 2 variables de type int et une boucle contenant une boucle de parcour, une boucle de création de la pile2 et potentiellement une boucle de création de la pile3.
La fonction prend comme arguments: un tableau d'entier et renvois la pile numéro 3 contenant la plus grande suite croissante
Renvois seulement la dernière plus grande suite croissante du tableau et c'est une fonction en O(n²)
Le bloc des tests
if "__main__"== __name__:
def cree_tableau():
tab= []
for i in range(40):
tab.append(randint(0,10))
return tab
tableau1= [0,1,2,1,3,2]
tableau2= [1,2,1,3]
tableau3=[1,2,3]
tableau4=[]
print(suite_croissante(tableau1))
print(suite_croissante(tableau2))
print(suite_croissante(tableau3))
tab1= cree_tableau()
print(tab1)
print(suite_croissante(tab1))
print(suite_croissante(tableau4)) #test du assert
4 tableaux définits,
une fonction qui créé un tableau aléatoire,
un affichage du tableau aléatoire,
5 appels et affichages de la fonction principal.